package model

import (
	"gorm.io/gorm"
)

type Menu struct {
	gorm.Model
	ParentID      uint   `json:"parent_id"`                          // 父菜单id
	TreePath      string `json:"tree_path"`                          // 父节点ID路径
	Name          string `json:"name"`                               // 菜单名称
	Type          int    `json:"type"`                               // 菜单类型(1:菜单 2:目录 3:外链 4:按钮)
	Path          string `json:"path" gorm:"type:varchar(128)"`      // 路由路径(浏览器地址栏路径)
	Component     string `json:"component" gorm:"type:varchar(128)"` // 组件路径(vue页面完整路径，省略.vue后缀)
	Perm          string `json:"perm" gorm:"type:varchar(128)"`      // 权限标识
	Visible       int    `json:"visible"`                            // 显示状态(1-显示;0-隐藏)
	Sort          int    `json:"sort"`                               // 排序
	Icon          string `json:"icon"`                               // 菜单图标
	Redirect      string `json:"redirect" gorm:"type:varchar(128)"`  // 跳转路径
	AlwaysShow    int    `json:"always_show"`                        // 【目录】只有一个子路由是否始终显示(1:是 0:否)
	KeepAlive     int    `json:"keep_alive"`                         // 【菜单】是否开启页面缓存(1:是 0:否)
	RequestUrl    string `json:"request_url"`                        //请求路径
	RequestMethod string `json:"request_method"`                     //请求方法
	Roles         string `json:"roles"`
	/**
	二级路由
	*/
	Children []Menu `json:"children" gorm:"foreignKey:ParentID"`
}

type Meta struct {
	/**
	true是隐藏路由，false是不隐藏
	*/
	Hidden bool `json:"hidden"`
	/**
	和路由一样，不用加/  例如 system
	*/
	Icon string `json:"icon"`
	/**
	角色，例如 student 也可以是 1 2 3 4区分
	*/
	Role string `json:"role"`
	/**
	内容，例如 系统管理
	*/
	Title string `json:"title"`
}
